# Relevant groups and variables:
#
# _allaux -- Auxiliary routines called from all precisions
#
# _slaux -- Auxiliary routines called from single precision
# _dzlaux -- Auxiliary routines called from double precision
#
# _dslasrc -- Double-single mixed precision real routines called from single, single-extra, and double precision real LAPACK routines (SLASRC, SXLASRC, DLASRC)
# _zclasrc -- Double-single mixed precision complex routines called from single, single-extra, and double precision complex LAPACK routines (CLASRC, CXLASRC, ZLASRC)
#
# _slasrc -- Single precision real LAPACK routines
# _sxlasrc -- Single precision real LAPACK routines using extra precision
# _clasrc -- Single precision complex LAPACK routines
# _cxlasrc -- Single precision complex LAPACK routines using extra precision
#
# _dlasrc -- Double precision real LAPACK routines
# _dxlasrc -- Double precision real LAPACK routines using extra precision
# _zlasrc -- Double precision complex LAPACK routines
# _zxlasrc -- Double precision complex LAPACK routines using extra precision
#
# TODO: meson doesn't support the deprecated routines yet
# _deprecated -- Deprecated routines in all precisions

# _allaux -- Auxiliary routines called from all precisions
# Needs _install_aux
# _allblas contains xerbla and xerbla_array already
_allaux = [
  'ilaenv.f',
  'ilaenv2stage.f',
  'ieeeck.f',
  'lsamen.f',
  'iparmq.f',
  'iparam2stage.F',
  'ilaprec.f',
  'ilatrans.f',
  'ilauplo.f',
  'iladiag.f',
  'chla_transtype.f',
  'la_xisnan.F90',
  'la_constants.f90',
  'xerbla_array.f',
]

# _auxlapack -- Auxiliary routines for lapack
_auxlapack = static_library(
  '_auxlapack',
  sources: _allaux,
  link_with: _allblas,
  link_whole: _install_aux,
)

# All other sources
_lapack_netlib_srcs = []

# _slaux -- Auxiliary routines called from single precision
# Needs _int_cpu and _install_aux
# For sroundup_lwork.f
# TODO: Handle SECOND_SRC
_sclaux = [
  'sbdsvdx.f',
  'sbdsdc.f',
  'sbdsqr.f',
  'sdisna.f',
  'slabad.f',
  'slacpy.f',
  'sladiv.f',
  'slae2.f',
  'slaebz.f',
  'slaed0.f',
  'slaed1.f',
  'slaed2.f',
  'slaed3.f',
  'slaed4.f',
  'slaed5.f',
  'slaed6.f',
  'slaed7.f',
  'slaed8.f',
  'slaed9.f',
  'slaeda.f',
  'slaev2.f',
  'slagtf.f',
  'slagts.f',
  'slamrg.f',
  'slanst.f',
  'slapy2.f',
  'slapy3.f',
  'slarnv.f',
  'slarra.f',
  'slarrb.f',
  'slarrc.f',
  'slarrd.f',
  'slarre.f',
  'slarrf.f',
  'slarrj.f',
  'slarrk.f',
  'slarrr.f',
  'slaneg.f',
  'slartg.f90',
  'slaruv.f',
  'slas2.f',
  'slascl.f',
  'slasd0.f',
  'slasd1.f',
  'slasd2.f',
  'slasd3.f',
  'slasd4.f',
  'slasd5.f',
  'slasd6.f',
  'slasd7.f',
  'slasd8.f',
  'slasda.f',
  'slasdq.f',
  'slasdt.f',
  'slaset.f',
  'slasq1.f',
  'slasq2.f',
  'slasq3.f',
  'slasq4.f',
  'slasq5.f',
  'slasq6.f',
  'slasr.f',
  'slasrt.f',
  'slassq.f90',
  'slasv2.f',
  'spttrf.f',
  'sstebz.f',
  'sstedc.f',
  'sstein.f',
  'ssteqr.f',
  'ssterf.f',
  'sstevx.f',
  'slartgp.f',
  'slartgs.f',
]

# _dzlaux -- Auxiliary routines called from double precision
# Needs _int_cpu and _install_aux
# For droundup_lwork.f and dlamch.f
# TODO: Handle DSECOND_SRC
_dzlaux = [
  'la_constants.f90',
  'dbdsdc.f',
  'dbdsvdx.f',
  'dbdsqr.f',
  'ddisna.f',
  'disnan.f',
  'dlabad.f',
  'dlacpy.f',
  'dladiv.f',
  'dlae2.f',
  'dlaebz.f',
  'dlaed0.f',
  'dlaed1.f',
  'dlaed2.f',
  'dlaed3.f',
  'dlaed4.f',
  'dlaed5.f',
  'dlaed6.f',
  'dlaed7.f',
  'dlaed8.f',
  'dlaed9.f',
  'dlaeda.f',
  'dlaev2.f',
  'dlagtf.f',
  'dlagts.f',
  'dlamrg.f',
  'dlanst.f',
  'dlapy2.f',
  'dlapy3.f',
  'dlarnv.f',
  'dlarra.f',
  'dlarrb.f',
  'dlarrc.f',
  'dlarrd.f',
  'dlarre.f',
  'dlarrf.f',
  'dlarrj.f',
  'dlarrk.f',
  'dlarrr.f',
  'dlaneg.f',
  'dlartg.f90',
  'dlaruv.f',
  'dlas2.f',
  'dlascl.f',
  'dlasd0.f',
  'dlasd1.f',
  'dlasd2.f',
  'dlasd3.f',
  'dlasd4.f',
  'dlasd5.f',
  'dlasd6.f',
  'dlasd7.f',
  'dlasd8.f',
  'dlasda.f',
  'dlasdq.f',
  'dlasdt.f',
  'dlaset.f',
  'dlasq1.f',
  'dlasq2.f',
  'dlasq3.f',
  'dlasq4.f',
  'dlasq5.f',
  'dlasq6.f',
  'dlasr.f',
  'dlasrt.f',
  'dlassq.f90',
  'dlasv2.f',
  'dlaisnan.f',
  'dpttrf.f',
  'dstebz.f',
  'dstedc.f',
  'dstein.f',
  'dsteqr.f',
  'dsterf.f',
  'dstevx.f',
  'dlartgp.f',
  'dlartgs.f',
]


# _slasrc -- Single precision real LAPACK routines
_slasrc = [
  'sgbbrd.f',
  'sgbcon.f',
  'sgbequ.f',
  'sgbrfs.f',
  'sgbsv.f',
  'sgbsvx.f',
  'sgbtf2.f',
  'sgbtrf.f',
  'sgbtrs.f',
  'sgebak.f',
  'sgebal.f',
  'sgebd2.f',
  'sgebrd.f',
  'sgecon.f',
  'sgeequ.f',
  'sgees.f',
  'sgeesx.f',
  'sgeev.f',
  'sgeevx.f',
  'sgehd2.f',
  'sgehrd.f',
  'sgelq2.f',
  'sgelqf.f',
  'sgels.f',
  'sgelsd.f',
  'sgelss.f',
  'sgelsy.f',
  'sgeql2.f',
  'sgeqlf.f',
  'sgeqp3.f',
  'sgeqr2.f',
  'sgeqr2p.f',
  'sgeqrf.f',
  'sgeqrfp.f',
  'sgerfs.f',
  'sgerq2.f',
  'sgerqf.f',
  'sgesc2.f',
  'sgesdd.f',
  'sgesv.f',
  'sgesvd.f',
  'sgesvdx.f',
  'sgesvx.f',
  'sgetc2.f',
  'sgetf2.f',
  'sgetri.f',
  'sggbak.f',
  'sggbal.f',
  'sgges.f',
  'sgges3.f',
  'sggesx.f',
  'sggev.f',
  'sggev3.f',
  'sggevx.f',
  'sggglm.f',
  'sgghrd.f',
  'sgghd3.f',
  'sgglse.f',
  'sggqrf.f',
  'sggrqf.f',
  'sggsvd3.f',
  'sggsvp3.f',
  'sgtcon.f',
  'sgtrfs.f',
  'sgtsv.f',
  'sgtsvx.f',
  'sgttrf.f',
  'sgttrs.f',
  'sgtts2.f',
  'shgeqz.f',
  'slaqz0.f',
  'slaqz1.f',
  'slaqz2.f',
  'slaqz3.f',
  'slaqz4.f',
  'shsein.f',
  'shseqr.f',
  'slabrd.f',
  'slacon.f',
  'slacn2.f',
  'slaein.f',
  'slaexc.f',
  'slag2.f',
  'slags2.f',
  'slagtm.f',
  'slagv2.f',
  'slahqr.f',
  'slahr2.f',
  'slaic1.f',
  'slaln2.f',
  'slals0.f',
  'slalsa.f',
  'slalsd.f',
  'slangb.f',
  'slange.f',
  'slangt.f',
  'slanhs.f',
  'slansb.f',
  'slansp.f',
  'slansy.f',
  'slantb.f',
  'slantp.f',
  'slantr.f',
  'slanv2.f',
  'slapll.f',
  'slapmt.f',
  'slaqgb.f',
  'slaqge.f',
  'slaqp2.f',
  'slaqps.f',
  'slaqsb.f',
  'slaqsp.f',
  'slaqsy.f',
  'slaqr0.f',
  'slaqr1.f',
  'slaqr2.f',
  'slaqr3.f',
  'slaqr4.f',
  'slaqr5.f',
  'slaqtr.f',
  'slar1v.f',
  'slar2v.f',
  'ilaslr.f',
  'ilaslc.f',
  'slarf.f',
  'slarfb.f',
  'slarfb_gett.f',
  'slarfg.f',
  'slarfgp.f',
  'slarft.f',
  'slarfx.f',
  'slarfy.f',
  'slargv.f',
  'slarrv.f',
  'slartv.f',
  'slarz.f',
  'slarzb.f',
  'slarzt.f',
  'slasy2.f',
  'slasyf.f',
  'slasyf_rook.f',
  'slasyf_rk.f',
  'slasyf_aa.f',
  'slatbs.f',
  'slatdf.f',
  'slatps.f',
  'slatrd.f',
  'slatrs.f',
  'slatrz.f',
  'slauu2.f',
  'slauum.f',
  'sopgtr.f',
  'sopmtr.f',
  'sorg2l.f',
  'sorg2r.f',
  'sorgbr.f',
  'sorghr.f',
  'sorgl2.f',
  'sorglq.f',
  'sorgql.f',
  'sorgqr.f',
  'sorgr2.f',
  'sorgrq.f',
  'sorgtr.f',
  'sorgtsqr.f',
  'sorgtsqr_row.f',
  'sorm2l.f',
  'sorm2r.f',
  'sorm22.f',
  'sormbr.f',
  'sormhr.f',
  'sorml2.f',
  'sormlq.f',
  'sormql.f',
  'sormqr.f',
  'sormr2.f',
  'sormr3.f',
  'sormrq.f',
  'sormrz.f',
  'sormtr.f',
  'spbcon.f',
  'spbequ.f',
  'spbrfs.f',
  'spbstf.f',
  'spbsv.f',
  'spbsvx.f',
  'spbtf2.f',
  'spbtrf.f',
  'spbtrs.f',
  'spocon.f',
  'spoequ.f',
  'sporfs.f',
  'sposv.f',
  'sposvx.f',
  'spotf2.f',
  'spotri.f',
  'spstrf.f',
  'spstf2.f',
  'sppcon.f',
  'sppequ.f',
  'spprfs.f',
  'sppsv.f',
  'sppsvx.f',
  'spptrf.f',
  'spptri.f',
  'spptrs.f',
  'sptcon.f',
  'spteqr.f',
  'sptrfs.f',
  'sptsv.f',
  'sptsvx.f',
  'spttrs.f',
  'sptts2.f',
  'srscl.f',
  'ssbev.f',
  'ssbevd.f',
  'ssbevx.f',
  'ssbgst.f',
  'ssbgv.f',
  'ssbgvd.f',
  'ssbgvx.f',
  'ssbtrd.f',
  'sspcon.f',
  'sspev.f',
  'sspevd.f',
  'sspevx.f',
  'sspgst.f',
  'sspgv.f',
  'sspgvd.f',
  'sspgvx.f',
  'ssprfs.f',
  'sspsv.f',
  'sspsvx.f',
  'ssptrd.f',
  'ssptrf.f',
  'ssptri.f',
  'ssptrs.f',
  'sstegr.f',
  'sstev.f',
  'sstevd.f',
  'sstevr.f',
  'ssycon.f',
  'ssyev.f',
  'ssyevd.f',
  'ssyevr.f',
  'ssyevx.f',
  'ssygs2.f',
  'ssygst.f',
  'ssygv.f',
  'ssygvd.f',
  'ssygvx.f',
  'ssyrfs.f',
  'ssysv.f',
  'ssysvx.f',
  'ssytd2.f',
  'ssytf2.f',
  'ssytrd.f',
  'ssytrf.f',
  'ssytri.f',
  'ssytri2.f',
  'ssytri2x.f',
  'ssyswapr.f',
  'ssytrs.f',
  'ssytrs2.f',
  'ssyconv.f',
  'ssyconvf.f',
  'ssyconvf_rook.f',
  'ssytf2_rook.f',
  'ssytrf_rook.f',
  'ssytrs_rook.f',
  'ssytri_rook.f',
  'ssycon_rook.f',
  'ssysv_rook.f',
  'ssytf2_rk.f',
  'ssytrf_rk.f',
  'ssytrs_3.f',
  'ssytri_3.f',
  'ssytri_3x.f',
  'ssycon_3.f',
  'ssysv_rk.f',
  'ssysv_aa.f',
  'ssytrf_aa.f',
  'ssytrs_aa.f',
  'ssysv_aa_2stage.f',
  'ssytrf_aa_2stage.f',
  'ssytrs_aa_2stage.f',
  'stbcon.f',
  'stbrfs.f',
  'stbtrs.f',
  'stgevc.f',
  'stgex2.f',
  'stgexc.f',
  'stgsen.f',
  'stgsja.f',
  'stgsna.f',
  'stgsy2.f',
  'stgsyl.f',
  'stpcon.f',
  'stprfs.f',
  'stptri.f',
  'stptrs.f',
  'strcon.f',
  'strevc.f',
  'strevc3.f',
  'strexc.f',
  'strrfs.f',
  'strsen.f',
  'strsna.f',
  'strsyl.f',
  'strti2.f',
  'strtri.f',
  'strtrs.f',
  'stzrzf.f',
  'sstemr.f',
  'slansf.f',
  'spftrf.f',
  'spftri.f',
  'spftrs.f',
  'ssfrk.f',
  'stfsm.f',
  'stftri.f',
  'stfttp.f',
  'stfttr.f',
  'stpttf.f',
  'stpttr.f',
  'strttf.f',
  'strttp.f',
  'sgejsv.f',
  'sgesvj.f',
  'sgsvj0.f',
  'sgsvj1.f',
  'sgeequb.f',
  'ssyequb.f',
  'spoequb.f',
  'sgbequb.f',
  'sbbcsd.f',
  'slapmr.f',
  'sorbdb.f',
  'sorbdb1.f',
  'sorbdb2.f',
  'sorbdb3.f',
  'sorbdb4.f',
  'sorbdb5.f',
  'sorbdb6.f',
  'sorcsd.f',
  'sorcsd2by1.f',
  'sgeqrt.f',
  'sgeqrt2.f',
  'sgeqrt3.f',
  'sgemqrt.f',
  'stpqrt.f',
  'stpqrt2.f',
  'stpmqrt.f',
  'stprfb.f',
  'sgelqt.f',
  'sgelqt3.f',
  'sgemlqt.f',
  'sgetsls.f',
  'sgetsqrhrt.f',
  'sgeqr.f',
  'slatsqr.f',
  'slamtsqr.f',
  'sgemqr.f',
  'sgelq.f',
  'slaswlq.f',
  'slamswlq.f',
  'sgemlq.f',
  'stplqt.f',
  'stplqt2.f',
  'stpmlqt.f',
  'sorhr_col.f',
  'slaorhr_col_getrfnp.f',
  'slaorhr_col_getrfnp2.f',
  'ssytrd_2stage.f',
  'ssytrd_sy2sb.f',
  'ssytrd_sb2st.F',
  'ssb2st_kernels.f',
  'ssyevd_2stage.f',
  'ssyev_2stage.f',
  'ssyevx_2stage.f',
  'ssyevr_2stage.f',
  'ssbev_2stage.f',
  'ssbevx_2stage.f',
  'ssbevd_2stage.f',
  'ssygv_2stage.f',
  'sgesvdq.f',
]

# DSLASRC -- Double-single mixed precision real routines
_dslasrc = [
  'sgetrf.f',
  'sgetrf2.f',
  'sgetrs.f',
  'sisnan.f',
  'slaisnan.f',
  'slaswp.f',
  'spotrf.f',
  'spotrf2.f',
  'spotrs.f',
]

# SXLASRC -- Single precision real LAPACK routines using extra precision
_sxlasrc = [
  'sgesvxx.f',
  'sgerfsx.f',
  'sla_gerfsx_extended.f',
  'sla_geamv.f',
  'sla_gercond.f',
  'sla_gerpvgrw.f',
  'ssysvxx.f',
  'ssyrfsx.f',
  'sla_syrfsx_extended.f',
  'sla_syamv.f',
  'sla_syrcond.f',
  'sla_syrpvgrw.f',
  'sposvxx.f',
  'sporfsx.f',
  'sla_porfsx_extended.f',
  'sla_porcond.f',
  'sla_porpvgrw.f',
  'sgbsvxx.f',
  'sgbrfsx.f',
  'sla_gbrfsx_extended.f',
  'sla_gbamv.f',
  'sla_gbrcond.f',
  'sla_gbrpvgrw.f',
  'sla_lin_berr.f',
  'slarscl2.f',
  'slascl2.f',
  'sla_wwaddw.f',
]

# CLASRC -- Single precision complex LAPACK routines
_clasrc = [
  'cbdsqr.f',
  'cgbbrd.f',
  'cgbcon.f',
  'cgbequ.f',
  'cgbrfs.f',
  'cgbsv.f',
  'cgbsvx.f',
  'cgbtf2.f',
  'cgbtrf.f',
  'cgbtrs.f',
  'cgebak.f',
  'cgebal.f',
  'cgebd2.f',
  'cgebrd.f',
  'cgecon.f',
  'cgeequ.f',
  'cgees.f',
  'cgeesx.f',
  'cgeev.f',
  'cgeevx.f',
  'cgehd2.f',
  'cgehrd.f',
  'cgelq2.f',
  'cgelqf.f',
  'cgels.f',
  'cgelsd.f',
  'cgelss.f',
  'cgelsy.f',
  'cgeql2.f',
  'cgeqlf.f',
  'cgeqp3.f',
  'cgeqr2.f',
  'cgeqr2p.f',
  'cgeqrf.f',
  'cgeqrfp.f',
  'cgerfs.f',
  'cgerq2.f',
  'cgerqf.f',
  'cgesc2.f',
  'cgesdd.f',
  'cgesv.f',
  'cgesvd.f',
  'cgesvdx.f',
  'cgesvj.f',
  'cgejsv.f',
  'cgsvj0.f',
  'cgsvj1.f',
  'cgesvx.f',
  'cgetc2.f',
  'cgetf2.f',
  'cgetrf2.f',
  'cgetri.f',
  'cggbak.f',
  'cggbal.f',
  'cgges.f',
  'cgges3.f',
  'cggesx.f',
  'cggev.f',
  'cggev3.f',
  'cggevx.f',
  'cggglm.f',
  'cgghrd.f',
  'cgghd3.f',
  'cgglse.f',
  'cggqrf.f',
  'cggrqf.f',
  'cggsvd3.f',
  'cggsvp3.f',
  'cgtcon.f',
  'cgtrfs.f',
  'cgtsv.f',
  'cgtsvx.f',
  'cgttrf.f',
  'cgttrs.f',
  'cgtts2.f',
  'chbev.f',
  'chbevd.f',
  'chbevx.f',
  'chbgst.f',
  'chbgv.f',
  'chbgvd.f',
  'chbgvx.f',
  'chbtrd.f',
  'checon.f',
  'cheev.f',
  'cheevd.f',
  'cheevr.f',
  'cheevx.f',
  'chegs2.f',
  'chegst.f',
  'chegv.f',
  'chegvd.f',
  'chegvx.f',
  'cherfs.f',
  'chesv.f',
  'chesvx.f',
  'chetd2.f',
  'chetf2.f',
  'chetrd.f',
  'chetrf.f',
  'chetri.f',
  'chetri2.f',
  'chetri2x.f',
  'cheswapr.f',
  'chetrs.f',
  'chetrs2.f',
  'chetf2_rook.f',
  'chetrf_rook.f',
  'chetri_rook.f',
  'chetrs_rook.f',
  'checon_rook.f',
  'chesv_rook.f',
  'chetf2_rk.f',
  'chetrf_rk.f',
  'chetri_3.f',
  'chetri_3x.f',
  'chetrs_3.f',
  'checon_3.f',
  'chesv_rk.f',
  'chesv_aa.f',
  'chetrf_aa.f',
  'chetrs_aa.f',
  'chesv_aa_2stage.f',
  'chetrf_aa_2stage.f',
  'chetrs_aa_2stage.f',
  'chgeqz.f',
  'chpcon.f',
  'chpev.f',
  'chpevd.f',
  'claqz0.f',
  'claqz1.f',
  'claqz2.f',
  'claqz3.f',
  'chpevx.f',
  'chpgst.f',
  'chpgv.f',
  'chpgvd.f',
  'chpgvx.f',
  'chprfs.f',
  'chpsv.f',
  'chpsvx.f',
  'chptrd.f',
  'chptrf.f',
  'chptri.f',
  'chptrs.f',
  'chsein.f',
  'chseqr.f',
  'clabrd.f',
  'clacgv.f',
  'clacon.f',
  'clacn2.f',
  'clacp2.f',
  'clacpy.f',
  'clacrm.f',
  'clacrt.f',
  'cladiv.f',
  'claed0.f',
  'claed7.f',
  'claed8.f',
  'claein.f',
  'claesy.f',
  'claev2.f',
  'clags2.f',
  'clagtm.f',
  'clahef.f',
  'clahef_rook.f',
  'clahef_rk.f',
  'clahef_aa.f',
  'clahqr.f',
  'clahr2.f',
  'claic1.f',
  'clals0.f',
  'clalsa.f',
  'clalsd.f',
  'clangb.f',
  'clange.f',
  'clangt.f',
  'clanhb.f',
  'clanhe.f',
  'clanhp.f',
  'clanhs.f',
  'clanht.f',
  'clansb.f',
  'clansp.f',
  'clansy.f',
  'clantb.f',
  'clantp.f',
  'clantr.f',
  'clapll.f',
  'clapmt.f',
  'clarcm.f',
  'claqgb.f',
  'claqge.f',
  'claqhb.f',
  'claqhe.f',
  'claqhp.f',
  'claqp2.f',
  'claqps.f',
  'claqsb.f',
  'claqr0.f',
  'claqr1.f',
  'claqr2.f',
  'claqr3.f',
  'claqr4.f',
  'claqr5.f',
  'claqsp.f',
  'claqsy.f',
  'clar1v.f',
  'clar2v.f',
  'ilaclr.f',
  'ilaclc.f',
  'clarf.f',
  'clarfb.f',
  'clarfb_gett.f',
  'clarfg.f',
  'clarfgp.f',
  'clarft.f',
  'clarfx.f',
  'clarfy.f',
  'clargv.f',
  'clarnv.f',
  'clarrv.f',
  'clartg.f90',
  'clartv.f',
  'clarz.f',
  'clarzb.f',
  'clarzt.f',
  'clascl.f',
  'claset.f',
  'clasr.f',
  'classq.f90',
  'claswp.f',
  'clasyf.f',
  'clasyf_rook.f',
  'clasyf_rk.f',
  'clasyf_aa.f',
  'clatbs.f',
  'clatdf.f',
  'clatps.f',
  'clatrd.f',
  'clatrs.f',
  'clatrz.f',
  'clauu2.f',
  'clauum.f',
  'cpbcon.f',
  'cpbequ.f',
  'cpbrfs.f',
  'cpbstf.f',
  'cpbsv.f',
  'cpbsvx.f',
  'cpbtf2.f',
  'cpbtrf.f',
  'cpbtrs.f',
  'cpocon.f',
  'cpoequ.f',
  'cporfs.f',
  'cposv.f',
  'cposvx.f',
  'cpotf2.f',
  'cpotrf2.f',
  'cpotri.f',
  'cpstrf.f',
  'cpstf2.f',
  'cppcon.f',
  'cppequ.f',
  'cpprfs.f',
  'cppsv.f',
  'cppsvx.f',
  'cpptrf.f',
  'cpptri.f',
  'cpptrs.f',
  'cptcon.f',
  'cpteqr.f',
  'cptrfs.f',
  'cptsv.f',
  'cptsvx.f',
  'cpttrf.f',
  'cpttrs.f',
  'cptts2.f',
  'crscl.f',
  'crot.f',
  'cspcon.f',
  'cspmv.f',
  'cspr.f',
  'csprfs.f',
  'cspsv.f',
  'cspsvx.f',
  'csptrf.f',
  'csptri.f',
  'csptrs.f',
  'csrscl.f',
  'cstedc.f',
  'cstegr.f',
  'cstein.f',
  'csteqr.f',
  'csycon.f',
  'csymv.f',
  'csyr.f',
  'csyrfs.f',
  'csysv.f',
  'csysvx.f',
  'csytf2.f',
  'csytrf.f',
  'csytri.f',
  'csytri2.f',
  'csytri2x.f',
  'csyswapr.f',
  'csytrs.f',
  'csytrs2.f',
  'csyconv.f',
  'csyconvf.f',
  'csyconvf_rook.f',
  'csytf2_rook.f',
  'csytrf_rook.f',
  'csytrs_rook.f',
  'csytri_rook.f',
  'csycon_rook.f',
  'csysv_rook.f',
  'csytf2_rk.f',
  'csytrf_rk.f',
  'csytrf_aa.f',
  'csytrs_3.f',
  'csytrs_aa.f',
  'csytri_3.f',
  'csytri_3x.f',
  'csycon_3.f',
  'csysv_rk.f',
  'csysv_aa.f',
  'csysv_aa_2stage.f',
  'csytrf_aa_2stage.f',
  'csytrs_aa_2stage.f',
  'ctbcon.f',
  'ctbrfs.f',
  'ctbtrs.f',
  'ctgevc.f',
  'ctgex2.f',
  'ctgexc.f',
  'ctgsen.f',
  'ctgsja.f',
  'ctgsna.f',
  'ctgsy2.f',
  'ctgsyl.f',
  'ctpcon.f',
  'ctprfs.f',
  'ctptri.f',
  'ctptrs.f',
  'ctrcon.f',
  'ctrevc.f',
  'ctrevc3.f',
  'ctrexc.f',
  'ctrrfs.f',
  'ctrsen.f',
  'ctrsna.f',
  'ctrsyl.f',
  'ctrti2.f',
  'ctrtri.f',
  'ctrtrs.f',
  'ctzrzf.f',
  'cung2l.f',
  'cung2r.f',
  'cungbr.f',
  'cunghr.f',
  'cungl2.f',
  'cunglq.f',
  'cungql.f',
  'cungqr.f',
  'cungr2.f',
  'cungrq.f',
  'cungtr.f',
  'cungtsqr.f',
  'cungtsqr_row.f',
  'cunm2l.f',
  'cunm2r.f',
  'cunmbr.f',
  'cunmhr.f',
  'cunml2.f',
  'cunm22.f',
  'cunmlq.f',
  'cunmql.f',
  'cunmqr.f',
  'cunmr2.f',
  'cunmr3.f',
  'cunmrq.f',
  'cunmrz.f',
  'cunmtr.f',
  'cupgtr.f',
  'cupmtr.f',
  'icmax1.f',
  'scsum1.f',
  'cstemr.f',
  'chfrk.f',
  'ctfttp.f',
  'clanhf.f',
  'cpftrf.f',
  'cpftri.f',
  'cpftrs.f',
  'ctfsm.f',
  'ctftri.f',
  'ctfttr.f',
  'ctpttf.f',
  'ctpttr.f',
  'ctrttf.f',
  'ctrttp.f',
  'cgeequb.f',
  'cgbequb.f',
  'csyequb.f',
  'cpoequb.f',
  'cheequb.f',
  'cbbcsd.f',
  'clapmr.f',
  'cunbdb.f',
  'cunbdb1.f',
  'cunbdb2.f',
  'cunbdb3.f',
  'cunbdb4.f',
  'cunbdb5.f',
  'cunbdb6.f',
  'cuncsd.f',
  'cuncsd2by1.f',
  'cgeqrt.f',
  'cgeqrt2.f',
  'cgeqrt3.f',
  'cgemqrt.f',
  'ctpqrt.f',
  'ctpqrt2.f',
  'ctpmqrt.f',
  'ctprfb.f',
  'cgelqt.f',
  'cgelqt3.f',
  'cgemlqt.f',
  'cgetsls.f',
  'cgetsqrhrt.f',
  'cgeqr.f',
  'clatsqr.f',
  'clamtsqr.f',
  'cgemqr.f',
  'cgelq.f',
  'claswlq.f',
  'clamswlq.f',
  'cgemlq.f',
  'ctplqt.f',
  'ctplqt2.f',
  'ctpmlqt.f',
  'cunhr_col.f',
  'claunhr_col_getrfnp.f',
  'claunhr_col_getrfnp2.f',
  'chetrd_2stage.f',
  'chetrd_he2hb.f',
  'chetrd_hb2st.F',
  'chb2st_kernels.f',
  'cheevd_2stage.f',
  'cheev_2stage.f',
  'cheevx_2stage.f',
  'cheevr_2stage.f',
  'chbev_2stage.f',
  'chbevx_2stage.f',
  'chbevd_2stage.f',
  'chegv_2stage.f',
  'cgesvdq.f',
]

# _cxlasrc -- Single precision complex LAPACK routines using extra precision
_cxlasrc = [
  'cgesvxx.f',
  'cgerfsx.f',
  'cla_gerfsx_extended.f',
  'cla_geamv.f',
  'cla_gercond_c.f',
  'cla_gercond_x.f',
  'cla_gerpvgrw.f',
  'csysvxx.f',
  'csyrfsx.f',
  'cla_syrfsx_extended.f',
  'cla_syamv.f',
  'cla_syrcond_c.f',
  'cla_syrcond_x.f',
  'cla_syrpvgrw.f',
  'cposvxx.f',
  'cporfsx.f',
  'cla_porfsx_extended.f',
  'cla_porcond_c.f',
  'cla_porcond_x.f',
  'cla_porpvgrw.f',
  'cgbsvxx.f',
  'cgbrfsx.f',
  'cla_gbrfsx_extended.f',
  'cla_gbamv.f',
  'cla_gbrcond_c.f',
  'cla_gbrcond_x.f',
  'cla_gbrpvgrw.f',
  'chesvxx.f',
  'cherfsx.f',
  'cla_herfsx_extended.f',
  'cla_heamv.f',
  'cla_hercond_c.f',
  'cla_hercond_x.f',
  'cla_herpvgrw.f',
  'cla_lin_berr.f',
  'clarscl2.f',
  'clascl2.f',
  'cla_wwaddw.f',
]

# _zclasrc -- Double-single mixed precision complex routines
_zclasrc = [
  'cgetrf.f',
  'cgetrf2.f',
  'cgetrs.f',
  'claswp.f',
  'cpotrf.f',
  'cpotrf2.f',
  'cpotrs.f',
  'cgetrs.f',
  'cpotrf.f',
  'cgetrf.f',
  'sisnan.f',
  'slaisnan.f',
]

# _dlasrc -- Double precision real LAPACK routines
_dlasrc = [
  'dbdsvdx.f',
  'dgbbrd.f',
  'dgbcon.f',
  'dgbequ.f',
  'dgbrfs.f',
  'dgbsv.f',
  'dgbsvx.f',
  'dgbtf2.f',
  'dgbtrf.f',
  'dgbtrs.f',
  'dgebak.f',
  'dgebal.f',
  'dgebd2.f',
  'dgebrd.f',
  'dgecon.f',
  'dgeequ.f',
  'dgees.f',
  'dgeesx.f',
  'dgeev.f',
  'dgeevx.f',
  'dgehd2.f',
  'dgehrd.f',
  'dgelq2.f',
  'dgelqf.f',
  'dgels.f',
  'dgelsd.f',
  'dgelss.f',
  'dgelsy.f',
  'dgeql2.f',
  'dgeqlf.f',
  'dgeqp3.f',
  'dgeqr2.f',
  'dgeqr2p.f',
  'dgeqrf.f',
  'dgeqrfp.f',
  'dgerfs.f',
  'dgerq2.f',
  'dgerqf.f',
  'dgesc2.f',
  'dgesdd.f',
  'dgesv.f',
  'dgesvd.f',
  'dgesvdx.f',
  'dgesvx.f',
  'dgetc2.f',
  'dgetf2.f',
  'dgetrf.f',
  'dgetrf2.f',
  'dgetri.f',
  'dgetrs.f',
  'dggbak.f',
  'dggbal.f',
  'dgges.f',
  'dgges3.f',
  'dggesx.f',
  'dggev.f',
  'dggev3.f',
  'dggevx.f',
  'dggglm.f',
  'dgghrd.f',
  'dgghd3.f',
  'dgglse.f',
  'dggqrf.f',
  'dggrqf.f',
  'dggsvd3.f',
  'dggsvp3.f',
  'dgtcon.f',
  'dgtrfs.f',
  'dgtsv.f',
  'dgtsvx.f',
  'dgttrf.f',
  'dgttrs.f',
  'dgtts2.f',
  'dhgeqz.f',
  'dlaqz0.f',
  'dlaqz1.f',
  'dlaqz2.f',
  'dlaqz3.f',
  'dlaqz4.f',
  'dhsein.f',
  'dhseqr.f',
  'dlabrd.f',
  'dlacon.f',
  'dlacn2.f',
  'dlaein.f',
  'dlaexc.f',
  'dlag2.f',
  'dlags2.f',
  'dlagtm.f',
  'dlagv2.f',
  'dlahqr.f',
  'dlahr2.f',
  'dlaic1.f',
  'dlaln2.f',
  'dlals0.f',
  'dlalsa.f',
  'dlalsd.f',
  'dlangb.f',
  'dlange.f',
  'dlangt.f',
  'dlanhs.f',
  'dlansb.f',
  'dlansp.f',
  'dlansy.f',
  'dlantb.f',
  'dlantp.f',
  'dlantr.f',
  'dlanv2.f',
  'dlapll.f',
  'dlapmt.f',
  'dlaqgb.f',
  'dlaqge.f',
  'dlaqp2.f',
  'dlaqps.f',
  'dlaqsb.f',
  'dlaqsp.f',
  'dlaqsy.f',
  'dlaqr0.f',
  'dlaqr1.f',
  'dlaqr2.f',
  'dlaqr3.f',
  'dlaqr4.f',
  'dlaqr5.f',
  'dlaqtr.f',
  'dlar1v.f',
  'dlar2v.f',
  'iladlr.f',
  'iladlc.f',
  'dlarf.f',
  'dlarfb.f',
  'dlarfb_gett.f',
  'dlarfg.f',
  'dlarfgp.f',
  'dlarft.f',
  'dlarfx.f',
  'dlarfy.f',
  'dlargv.f',
  'dlarrv.f',
  'dlartv.f',
  'dlarz.f',
  'dlarzb.f',
  'dlarzt.f',
  'dlaswp.f',
  'dlasy2.f',
  'dlasyf.f',
  'dlasyf_rook.f',
  'dlasyf_rk.f',
  'dlasyf_aa.f',
  'dlatbs.f',
  'dlatdf.f',
  'dlatps.f',
  'dlatrd.f',
  'dlatrs.f',
  'dlatrz.f',
  'dlauu2.f',
  'dlauum.f',
  'dopgtr.f',
  'dopmtr.f',
  'dorg2l.f',
  'dorg2r.f',
  'dorgbr.f',
  'dorghr.f',
  'dorgl2.f',
  'dorglq.f',
  'dorgql.f',
  'dorgqr.f',
  'dorgr2.f',
  'dorgrq.f',
  'dorgtr.f',
  'dorgtsqr.f',
  'dorgtsqr_row.f',
  'dorm2l.f',
  'dorm2r.f',
  'dorm22.f',
  'dormbr.f',
  'dormhr.f',
  'dorml2.f',
  'dormlq.f',
  'dormql.f',
  'dormqr.f',
  'dormr2.f',
  'dormr3.f',
  'dormrq.f',
  'dormrz.f',
  'dormtr.f',
  'dpbcon.f',
  'dpbequ.f',
  'dpbrfs.f',
  'dpbstf.f',
  'dpbsv.f',
  'dpbsvx.f',
  'dpbtf2.f',
  'dpbtrf.f',
  'dpbtrs.f',
  'dpocon.f',
  'dpoequ.f',
  'dporfs.f',
  'dposv.f',
  'dposvx.f',
  'dpotf2.f',
  'dpotrf.f',
  'dpotrf2.f',
  'dpotri.f',
  'dpotrs.f',
  'dpstrf.f',
  'dpstf2.f',
  'dppcon.f',
  'dppequ.f',
  'dpprfs.f',
  'dppsv.f',
  'dppsvx.f',
  'dpptrf.f',
  'dpptri.f',
  'dpptrs.f',
  'dptcon.f',
  'dpteqr.f',
  'dptrfs.f',
  'dptsv.f',
  'dptsvx.f',
  'dpttrs.f',
  'dptts2.f',
  'drscl.f',
  'dsbev.f',
  'dsbevd.f',
  'dsbevx.f',
  'dsbgst.f',
  'dsbgv.f',
  'dsbgvd.f',
  'dsbgvx.f',
  'dsbtrd.f',
  'dspcon.f',
  'dspev.f',
  'dspevd.f',
  'dspevx.f',
  'dspgst.f',
  'dspgv.f',
  'dspgvd.f',
  'dspgvx.f',
  'dsprfs.f',
  'dspsv.f',
  'dspsvx.f',
  'dsptrd.f',
  'dsptrf.f',
  'dsptri.f',
  'dsptrs.f',
  'dstegr.f',
  'dstev.f',
  'dstevd.f',
  'dstevr.f',
  'dsycon.f',
  'dsyev.f',
  'dsyevd.f',
  'dsyevr.f',
  'dsyevx.f',
  'dsygs2.f',
  'dsygst.f',
  'dsygv.f',
  'dsygvd.f',
  'dsygvx.f',
  'dsyrfs.f',
  'dsysv.f',
  'dsysvx.f',
  'dsytd2.f',
  'dsytf2.f',
  'dsytrd.f',
  'dsytrf.f',
  'dsytri.f',
  'dsytrs.f',
  'dsytrs2.f',
  'dsytri2.f',
  'dsytri2x.f',
  'dsyswapr.f',
  'dsyconv.f',
  'dsyconvf.f',
  'dsyconvf_rook.f',
  'dsytf2_rook.f',
  'dsytrf_rook.f',
  'dsytrs_rook.f',
  'dsytri_rook.f',
  'dsycon_rook.f',
  'dsysv_rook.f',
  'dsytf2_rk.f',
  'dsytrf_rk.f',
  'dsytrs_3.f',
  'dsytri_3.f',
  'dsytri_3x.f',
  'dsycon_3.f',
  'dsysv_rk.f',
  'dsysv_aa.f',
  'dsytrf_aa.f',
  'dsytrs_aa.f',
  'dsysv_aa_2stage.f',
  'dsytrf_aa_2stage.f',
  'dsytrs_aa_2stage.f',
  'dtbcon.f',
  'dtbrfs.f',
  'dtbtrs.f',
  'dtgevc.f',
  'dtgex2.f',
  'dtgexc.f',
  'dtgsen.f',
  'dtgsja.f',
  'dtgsna.f',
  'dtgsy2.f',
  'dtgsyl.f',
  'dtpcon.f',
  'dtprfs.f',
  'dtptri.f',
  'dtptrs.f',
  'dtrcon.f',
  'dtrevc.f',
  'dtrevc3.f',
  'dtrexc.f',
  'dtrrfs.f',
  'dtrsen.f',
  'dtrsna.f',
  'dtrsyl.f',
  'dtrti2.f',
  'dtrtri.f',
  'dtrtrs.f',
  'dtzrzf.f',
  'dstemr.f',
  'dsgesv.f',
  'dsposv.f',
  'dlag2s.f',
  'slag2d.f',
  'dlat2s.f',
  'dlansf.f',
  'dpftrf.f',
  'dpftri.f',
  'dpftrs.f',
  'dsfrk.f',
  'dtfsm.f',
  'dtftri.f',
  'dtfttp.f',
  'dtfttr.f',
  'dtpttf.f',
  'dtpttr.f',
  'dtrttf.f',
  'dtrttp.f',
  'dgejsv.f',
  'dgesvj.f',
  'dgsvj0.f',
  'dgsvj1.f',
  'dgeequb.f',
  'dsyequb.f',
  'dpoequb.f',
  'dgbequb.f',
  'dbbcsd.f',
  'dlapmr.f',
  'dorbdb.f',
  'dorbdb1.f',
  'dorbdb2.f',
  'dorbdb3.f',
  'dorbdb4.f',
  'dorbdb5.f',
  'dorbdb6.f',
  'dorcsd.f',
  'dorcsd2by1.f',
  'dgeqrt.f',
  'dgeqrt2.f',
  'dgeqrt3.f',
  'dgemqrt.f',
  'dtpqrt.f',
  'dtpqrt2.f',
  'dtpmqrt.f',
  'dtprfb.f',
  'dgelqt.f',
  'dgelqt3.f',
  'dgemlqt.f',
  'dgetsls.f',
  'dgetsqrhrt.f',
  'dgeqr.f',
  'dlatsqr.f',
  'dlamtsqr.f',
  'dgemqr.f',
  'dgelq.f',
  'dlaswlq.f',
  'dlamswlq.f',
  'dgemlq.f',
  'dtplqt.f',
  'dtplqt2.f',
  'dtpmlqt.f',
  'dorhr_col.f',
  'dlaorhr_col_getrfnp.f',
  'dlaorhr_col_getrfnp2.f',
  'dsytrd_2stage.f',
  'dsytrd_sy2sb.f',
  'dsytrd_sb2st.F',
  'dsb2st_kernels.f',
  'dsyevd_2stage.f',
  'dsyev_2stage.f',
  'dsyevx_2stage.f',
  'dsyevr_2stage.f',
  'dsbev_2stage.f',
  'dsbevx_2stage.f',
  'dsbevd_2stage.f',
  'dsygv_2stage.f',
  'dgesvdq.f',
]

# _dxlasrc -- Double precision real LAPACK routines using extra precision
_dxlasrc = [
  'dgesvxx.f',
  'dgerfsx.f',
  'dla_gerfsx_extended.f',
  'dla_geamv.f',
  'dla_gercond.f',
  'dla_gerpvgrw.f',
  'dsysvxx.f',
  'dsyrfsx.f',
  'dla_syrfsx_extended.f',
  'dla_syamv.f',
  'dla_syrcond.f',
  'dla_syrpvgrw.f',
  'dposvxx.f',
  'dporfsx.f',
  'dla_porfsx_extended.f',
  'dla_porcond.f',
  'dla_porpvgrw.f',
  'dgbsvxx.f',
  'dgbrfsx.f',
  'dla_gbrfsx_extended.f',
  'dla_gbamv.f',
  'dla_gbrcond.f',
  'dla_gbrpvgrw.f',
  'dla_lin_berr.f',
  'dlarscl2.f',
  'dlascl2.f',
  'dla_wwaddw.f',
]

# _zlasrc -- Double precision complex LAPACK routines
_zlasrc = [
  'zbdsqr.f',
  'zgbbrd.f',
  'zgbcon.f',
  'zgbequ.f',
  'zgbrfs.f',
  'zgbsv.f',
  'zgbsvx.f',
  'zgbtf2.f',
  'zgbtrf.f',
  'zgbtrs.f',
  'zgebak.f',
  'zgebal.f',
  'zgebd2.f',
  'zgebrd.f',
  'zgecon.f',
  'zgeequ.f',
  'zgees.f',
  'zgeesx.f',
  'zgeev.f',
  'zgeevx.f',
  'zgehd2.f',
  'zgehrd.f',
  'zgelq2.f',
  'zgelqf.f',
  'zgels.f',
  'zgelsd.f',
  'zgelss.f',
  'zgelsy.f',
  'zgeql2.f',
  'zgeqlf.f',
  'zgeqp3.f',
  'zgeqr2.f',
  'zgeqr2p.f',
  'zgeqrf.f',
  'zgeqrfp.f',
  'zgerfs.f',
  'zgerq2.f',
  'zgerqf.f',
  'zgesc2.f',
  'zgesdd.f',
  'zgesv.f',
  'zgesvd.f',
  'zgesvdx.f',
  'zgesvx.f',
  'zgesvj.f',
  'zgejsv.f',
  'zgsvj0.f',
  'zgsvj1.f',
  'zgetc2.f',
  'zgetf2.f',
  'zgetrf.f',
  'zgetrf2.f',
  'zgetri.f',
  'zgetrs.f',
  'zggbak.f',
  'zggbal.f',
  'zgges.f',
  'zgges3.f',
  'zggesx.f',
  'zggev.f',
  'zggev3.f',
  'zggevx.f',
  'zggglm.f',
  'zgghrd.f',
  'zgghd3.f',
  'zgglse.f',
  'zggqrf.f',
  'zggrqf.f',
  'zggsvd3.f',
  'zggsvp3.f',
  'zgtcon.f',
  'zgtrfs.f',
  'zgtsv.f',
  'zgtsvx.f',
  'zgttrf.f',
  'zgttrs.f',
  'zgtts2.f',
  'zhbev.f',
  'zhbevd.f',
  'zhbevx.f',
  'zhbgst.f',
  'zhbgv.f',
  'zhbgvd.f',
  'zhbgvx.f',
  'zhbtrd.f',
  'zhecon.f',
  'zheev.f',
  'zheevd.f',
  'zheevr.f',
  'zheevx.f',
  'zhegs2.f',
  'zhegst.f',
  'zhegv.f',
  'zhegvd.f',
  'zhegvx.f',
  'zherfs.f',
  'zhesv.f',
  'zhesvx.f',
  'zhetd2.f',
  'zhetf2.f',
  'zhetrd.f',
  'zhetrf.f',
  'zhetri.f',
  'zhetri2.f',
  'zhetri2x.f',
  'zheswapr.f',
  'zhetrs.f',
  'zhetrs2.f',
  'zhetf2_rook.f',
  'zhetrf_rook.f',
  'zhetri_rook.f',
  'zhetrs_rook.f',
  'zhecon_rook.f',
  'zhesv_rook.f',
  'zhetf2_rk.f',
  'zhetrf_rk.f',
  'zhetri_3.f',
  'zhetri_3x.f',
  'zhetrs_3.f',
  'zhecon_3.f',
  'zhesv_rk.f',
  'zhesv_aa.f',
  'zhetrf_aa.f',
  'zhetrs_aa.f',
  'zhesv_aa_2stage.f',
  'zhetrf_aa_2stage.f',
  'zhetrs_aa_2stage.f',
  'zhgeqz.f',
  'zhpcon.f',
  'zhpev.f',
  'zhpevd.f',
  'zlaqz0.f',
  'zlaqz1.f',
  'zlaqz2.f',
  'zlaqz3.f',
  'zhpevx.f',
  'zhpgst.f',
  'zhpgv.f',
  'zhpgvd.f',
  'zhpgvx.f',
  'zhprfs.f',
  'zhpsv.f',
  'zhpsvx.f',
  'zhptrd.f',
  'zhptrf.f',
  'zhptri.f',
  'zhptrs.f',
  'zhsein.f',
  'zhseqr.f',
  'zlabrd.f',
  'zlacgv.f',
  'zlacon.f',
  'zlacn2.f',
  'zlacp2.f',
  'zlacpy.f',
  'zlacrm.f',
  'zlacrt.f',
  'zladiv.f',
  'zlaed0.f',
  'zlaed7.f',
  'zlaed8.f',
  'zlaein.f',
  'zlaesy.f',
  'zlaev2.f',
  'zlags2.f',
  'zlagtm.f',
  'zlahef.f',
  'zlahef_rook.f',
  'zlahef_rk.f',
  'zlahef_aa.f',
  'zlahqr.f',
  'zlahr2.f',
  'zlaic1.f',
  'zlals0.f',
  'zlalsa.f',
  'zlalsd.f',
  'zlangb.f',
  'zlange.f',
  'zlangt.f',
  'zlanhb.f',
  'zlanhe.f',
  'zlanhp.f',
  'zlanhs.f',
  'zlanht.f',
  'zlansb.f',
  'zlansp.f',
  'zlansy.f',
  'zlantb.f',
  'zlantp.f',
  'zlantr.f',
  'zlapll.f',
  'zlapmt.f',
  'zlaqgb.f',
  'zlaqge.f',
  'zlaqhb.f',
  'zlaqhe.f',
  'zlaqhp.f',
  'zlaqp2.f',
  'zlaqps.f',
  'zlaqsb.f',
  'zlaqr0.f',
  'zlaqr1.f',
  'zlaqr2.f',
  'zlaqr3.f',
  'zlaqr4.f',
  'zlaqr5.f',
  'zlaqsp.f',
  'zlaqsy.f',
  'zlar1v.f',
  'zlar2v.f',
  'ilazlr.f',
  'ilazlc.f',
  'zlarcm.f',
  'zlarf.f',
  'zlarfb.f',
  'zlarfb_gett.f',
  'zlarfg.f',
  'zlarfgp.f',
  'zlarft.f',
  'zlarfx.f',
  'zlarfy.f',
  'zlargv.f',
  'zlarnv.f',
  'zlarrv.f',
  'zlartg.f90',
  'zlartv.f',
  'zlarz.f',
  'zlarzb.f',
  'zlarzt.f',
  'zlascl.f',
  'zlaset.f',
  'zlasr.f',
  'zlassq.f90',
  'zlaswp.f',
  'zlasyf.f',
  'zlasyf_rook.f',
  'zlasyf_rk.f',
  'zlasyf_aa.f',
  'zlatbs.f',
  'zlatdf.f',
  'zlatps.f',
  'zlatrd.f',
  'zlatrs.f',
  'zlatrz.f',
  'zlauu2.f',
  'zlauum.f',
  'zpbcon.f',
  'zpbequ.f',
  'zpbrfs.f',
  'zpbstf.f',
  'zpbsv.f',
  'zpbsvx.f',
  'zpbtf2.f',
  'zpbtrf.f',
  'zpbtrs.f',
  'zpocon.f',
  'zpoequ.f',
  'zporfs.f',
  'zposv.f',
  'zposvx.f',
  'zpotf2.f',
  'zpotrf.f',
  'zpotrf2.f',
  'zpotri.f',
  'zpotrs.f',
  'zpstrf.f',
  'zpstf2.f',
  'zppcon.f',
  'zppequ.f',
  'zpprfs.f',
  'zppsv.f',
  'zppsvx.f',
  'zpptrf.f',
  'zpptri.f',
  'zpptrs.f',
  'zptcon.f',
  'zpteqr.f',
  'zptrfs.f',
  'zptsv.f',
  'zptsvx.f',
  'zpttrf.f',
  'zpttrs.f',
  'zptts2.f',
  'zrscl.f',
  'zrot.f',
  'zspcon.f',
  'zspmv.f',
  'zspr.f',
  'zsprfs.f',
  'zspsv.f',
  'zspsvx.f',
  'zsptrf.f',
  'zsptri.f',
  'zsptrs.f',
  'zdrscl.f',
  'zstedc.f',
  'zstegr.f',
  'zstein.f',
  'zsteqr.f',
  'zsycon.f',
  'zsymv.f',
  'zsyr.f',
  'zsyrfs.f',
  'zsysv.f',
  'zsysvx.f',
  'zsytf2.f',
  'zsytrf.f',
  'zsytri.f',
  'zsytri2.f',
  'zsytri2x.f',
  'zsyswapr.f',
  'zsytrs.f',
  'zsytrs2.f',
  'zsyconv.f',
  'zsyconvf.f',
  'zsyconvf_rook.f',
  'zsytf2_rook.f',
  'zsytrf_rook.f',
  'zsytrs_rook.f',
  'zsytrs_aa.f',
  'zsytri_rook.f',
  'zsycon_rook.f',
  'zsysv_rook.f',
  'zsytf2_rk.f',
  'zsytrf_rk.f',
  'zsytrf_aa.f',
  'zsytrs_3.f',
  'zsysv_aa_2stage.f',
  'zsytrf_aa_2stage.f',
  'zsytrs_aa_2stage.f',
  'zsytri_3.f',
  'zsytri_3x.f',
  'zsycon_3.f',
  'zsysv_rk.f',
  'zsysv_aa.f',
  'ztbcon.f',
  'ztbrfs.f',
  'ztbtrs.f',
  'ztgevc.f',
  'ztgex2.f',
  'ztgexc.f',
  'ztgsen.f',
  'ztgsja.f',
  'ztgsna.f',
  'ztgsy2.f',
  'ztgsyl.f',
  'ztpcon.f',
  'ztprfs.f',
  'ztptri.f',
  'ztptrs.f',
  'ztrcon.f',
  'ztrevc.f',
  'ztrevc3.f',
  'ztrexc.f',
  'ztrrfs.f',
  'ztrsen.f',
  'ztrsna.f',
  'ztrsyl.f',
  'ztrti2.f',
  'ztrtri.f',
  'ztrtrs.f',
  'ztzrzf.f',
  'zung2l.f',
  'zung2r.f',
  'zungbr.f',
  'zunghr.f',
  'zungl2.f',
  'zunglq.f',
  'zungql.f',
  'zungqr.f',
  'zungr2.f',
  'zungrq.f',
  'zungtr.f',
  'zungtsqr.f',
  'zungtsqr_row.f',
  'zunm2l.f',
  'zunm2r.f',
  'zunmbr.f',
  'zunmhr.f',
  'zunml2.f',
  'zunm22.f',
  'zunmlq.f',
  'zunmql.f',
  'zunmqr.f',
  'zunmr2.f',
  'zunmr3.f',
  'zunmrq.f',
  'zunmrz.f',
  'zunmtr.f',
  'zupgtr.f',
  'zupmtr.f',
  'izmax1.f',
  'dzsum1.f',
  'zstemr.f',
  'zcgesv.f',
  'zcposv.f',
  'zlag2c.f',
  'clag2z.f',
  'zlat2c.f',
  'zhfrk.f',
  'ztfttp.f',
  'zlanhf.f',
  'zpftrf.f',
  'zpftri.f',
  'zpftrs.f',
  'ztfsm.f',
  'ztftri.f',
  'ztfttr.f',
  'ztpttf.f',
  'ztpttr.f',
  'ztrttf.f',
  'ztrttp.f',
  'zgeequb.f',
  'zgbequb.f',
  'zsyequb.f',
  'zpoequb.f',
  'zheequb.f',
  'zbbcsd.f',
  'zlapmr.f',
  'zunbdb.f',
  'zunbdb1.f',
  'zunbdb2.f',
  'zunbdb3.f',
  'zunbdb4.f',
  'zunbdb5.f',
  'zunbdb6.f',
  'zuncsd.f',
  'zuncsd2by1.f',
  'zgeqrt.f',
  'zgeqrt2.f',
  'zgeqrt3.f',
  'zgemqrt.f',
  'ztpqrt.f',
  'ztpqrt2.f',
  'ztpmqrt.f',
  'ztprfb.f',
  'ztplqt.f',
  'ztplqt2.f',
  'ztpmlqt.f',
  'zgelqt.f',
  'zgelqt3.f',
  'zgemlqt.f',
  'zgetsls.f',
  'zgetsqrhrt.f',
  'zgeqr.f',
  'zlatsqr.f',
  'zlamtsqr.f',
  'zgemqr.f',
  'zgelq.f',
  'zlaswlq.f',
  'zlamswlq.f',
  'zgemlq.f',
  'zunhr_col.f',
  'zlaunhr_col_getrfnp.f',
  'zlaunhr_col_getrfnp2.f',
  'zhetrd_2stage.f',
  'zhetrd_he2hb.f',
  'zhetrd_hb2st.F',
  'zhb2st_kernels.f',
  'zheevd_2stage.f',
  'zheev_2stage.f',
  'zheevx_2stage.f',
  'zheevr_2stage.f',
  'zhbev_2stage.f',
  'zhbevx_2stage.f',
  'zhbevd_2stage.f',
  'zhegv_2stage.f',
  'zgesvdq.f',
]

# _zxlasrc -- Double precision complex LAPACK routines using extra precision
_zxlasrc = [
  'zgesvxx.f',
  'zgerfsx.f',
  'zla_gerfsx_extended.f',
  'zla_geamv.f',
  'zla_gercond_c.f',
  'zla_gercond_x.f',
  'zla_gerpvgrw.f',
  'zsysvxx.f',
  'zsyrfsx.f',
  'zla_syrfsx_extended.f',
  'zla_syamv.f',
  'zla_syrcond_c.f',
  'zla_syrcond_x.f',
  'zla_syrpvgrw.f',
  'zposvxx.f',
  'zporfsx.f',
  'zla_porfsx_extended.f',
  'zla_porcond_c.f',
  'zla_porcond_x.f',
  'zla_porpvgrw.f',
  'zgbsvxx.f',
  'zgbrfsx.f',
  'zla_gbrfsx_extended.f',
  'zla_gbamv.f',
  'zla_gbrcond_c.f',
  'zla_gbrcond_x.f',
  'zla_gbrpvgrw.f',
  'zhesvxx.f',
  'zherfsx.f',
  'zla_herfsx_extended.f',
  'zla_heamv.f',
  'zla_hercond_c.f',
  'zla_hercond_x.f',
  'zla_herpvgrw.f',
  'zla_lin_berr.f',
  'zlarscl2.f',
  'zlascl2.f',
  'zla_wwaddw.f',
]

# Start making the lapack target
_libs = [_allblas]
_deps = []
if use_xblas
  _lapack_netlib_srcs += _sxlasrc + _dxlasrc + _cxlasrc + _zxlasrc
  _deps = dependency('xblas')
else
  _libs += netlib_blas
endif

if prec == 's' or build_single or build_all_prec
  _lapack_netlib_srcs += _slasrc + _dslasrc + _sclaux
endif

if prec == 'd' or build_double or build_all_prec
  _lapack_netlib_srcs += _dlasrc + _dslasrc + _dzlaux
endif

if prec == 'c' or build_complex or build_all_prec
  _lapack_netlib_srcs += _clasrc + _zclasrc + _sclaux
endif

if prec == 'z' or build_complex16 or build_all_prec
  _lapack_netlib_srcs += _zlasrc + _zclasrc + _dzlaux
endif

# Create the lapack library
netlib_lapack = library(
  _netlib_lapack_name,
  sources: _lapack_netlib_srcs,
  link_with: _libs,
  link_whole: [_auxlapack],
  install: true,
  kwargs: lapack_version_kwargs,
)

if not as_subproject
  pkg.generate(
    netlib_lapack,
    name: 'lapack',
    filebase: 'meson-lapack',
    description: 'lapack via meson build',
    version: f'@pkg_ver@_lapack',
    install_dir: pkg_install_dir,
  )
endif
